//home小仓库
import {reqCategoryList,reqGetBannerList,reqFloorList} from '@/api'
const state={
    //state中数据的默认初始值不能乱写,根据服务器返回的值写
    categoryList:[],
    bannerList:[] ,  //轮播图的数据
    floorList:[]//floor组件的数据
}
const mutations={   //mutations函数里面的函数会被传入两个参数，一个是仓库数据state(下面这个函数的state和categoryList是形参),一个是commit传入的数据
    CATEGORYLIST(state,categoryList){
          state.categoryList=categoryList
    },
    GETBANNERLIST(state,bannerList){
        state.bannerList=bannerList
    },
    GETFLOORLIST(state,floorList){
        state.floorList=floorList
    }
}
const actions={
    //通过api里面的接口函数调用,向服务器发请求并获得数据
   async categoryList({commit}){    //把commit函数从一个context对象解构出来 es6语法
       //reqCategoryList是通过axios发的请求回来的是一个promise对象，await吧promise对象转为promise返回的值，想用await就必须用async
       let result=await reqCategoryList() 
        if(result.code==200){
            commit("CATEGORYLIST",result.data)
        }


    },
      async   getBannerList({commit}){
             let result =await reqGetBannerList()
             if(result.code==200){
                commit("GETBANNERLIST",result.data)
             }
         },
         //获取floor数据
         //因为要遍历两个floor出来,所以floor的action不能在floor组件中触发，要在父组件home中触发
      async   getFloorList({commit}){
            let result=await reqFloorList()
            if(result.code==200){
                commit("GETFLOORLIST",result.data)
            }
         }

}
//计算属性
const getters={}

export default {
    state,
    mutations,
    actions,
    getters
}